package com.taotao.rest.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import redis.clients.jedis.JedisPool;

import com.taotao.mapper.TbItemCatMapper;
import com.taotao.mapper.TbItemDescMapper;
import com.taotao.mapper.TbItemMapper;
import com.taotao.mapper.TbItemParamMapper;
import com.taotao.po.TbItem;
import com.taotao.po.TbItemCat;
import com.taotao.po.TbItemCatExample;
import com.taotao.po.TbItemCatExample.Criteria;
import com.taotao.po.TbItemDesc;
import com.taotao.po.TbItemParam;
import com.taotao.rest.pojo.CatNode;
import com.taotao.rest.pojo.ItemCatResult;
import com.taotao.rest.service.ItemCatService;

@Service
public class ItemCatServiceImpl implements ItemCatService {
	
	
	@Autowired
	private TbItemCatMapper itemCatMapper;
		
	@Override
	public ItemCatResult getItemCatList() {
		ItemCatResult itemCatResult=new ItemCatResult();
		
		// 从一级目录来查询 parentId = 0
		List<Object> data = getItemCatList(0l);
		itemCatResult.setData(data);
		
		return itemCatResult;
	}

	/**
	 * 采用递归的方法实现 将N个相同的数据结构 先看成一个 来处理 可以更好的理解
	 * @param parentId
	 * @return
	 */
	public List<Object> getItemCatList(Long parentId)
	{
		
		// 通过父节点ID 来查询分类
		TbItemCatExample example = new TbItemCatExample();
		Criteria criteria = example.createCriteria();
		criteria.andParentIdEqualTo(parentId);
		List<TbItemCat> list = itemCatMapper.selectByExample(example);
		int index=0; // 设置一级目录不超过了14条
		List<Object> resultList = new ArrayList<>();
		for (TbItemCat itemCat : list) {
			// 前台展示不超过14个
			if (index>=14) {
				break;
			}
			//如果是父节点
			if (itemCat.getIsParent()) {
				CatNode node = new CatNode();
				node.setUrl("/products/"+itemCat.getId()+".html");
				//如果当前节点为第一级节点
				if (itemCat.getParentId() == 0) {
					node.setName("<a href='/products/"+itemCat.getId()+".html'>"+itemCat.getName()+"</a>");
				} else {
					node.setName(itemCat.getName());
				}
				node.setItem(getItemCatList(itemCat.getId()));
				//把node添加到列表
				resultList.add(node);
			} else {
				//如果是叶子节点
				String item = "/products/"+itemCat.getId()+".html|" + itemCat.getName();
				resultList.add(item);
			}
			index++;
		}	
		return resultList;
	}

	
}
